/*
 * cjt188.h
 *
 *  Created on: Sep 18, 2015
 *      Author: lhl
 */

#ifndef CJT188_H_
#define CJT188_H_

#include "cjt188def.h"

///////////////////Cjt188_lib接口函数  begin//////////////////////////////////
/***************************************
 * CJ/T188 报文完整性解析
 ***************************************/
extern int cj188_PreProcess(INT8U* step,INT32U* rev_delay,INT32U delay_num,INT32U* rev_tail,INT32U* rev_head,INT8U *RevBuf,INT8U* dealbuf);

/***************************************
 * CJ/T188 报文内容解析
 ***************************************/
extern INT16S cj188_parse(cj188_Frame *cj188,INT8U* rcvbuff,INT32U rcvlen);

/********************************************************
 * CJ/T188 组织请求报文明码帧,返回组织的报文帧
 * 注意: 1.主站发送的序号SER,在每次通讯前,按照模256加1运算后产生
 * 		2.发送帧信息之前,应先发送2~4个字节FEH
 *******************************************************/
extern INT16S cj188_ComposeFrame(cj188_Frame cj188,cj188_Para cj188_para,INT8U* sendbuff);

/***************************************
 * CJ/T188 水\气表计量数据内容解析
 ***************************************/
extern INT16S cj188_WaterGos_CurrData(curr_Water_Gos *currData,INT8U *data);
///////////////////Cjt188_lib接口函数  end///////////////////////////////////

/***************************************
 * CJ/T188 热表计量数据内容解析
 ***************************************/
extern INT16S cj188_Hot_CurrData(curr_Hot *currData,INT8U *data);

/********************************************************
 * CJ/T188 根据DI的值判断历史记录数据的月份,返回0-11月
 *******************************************************/
INT8S	getMonIndex(INT8U di1,INT8U	di0);
/***************************************
 * CJ/T188 帧校验和
 ***************************************/
INT8U checkSum(INT8U* buff,INT32U len);

/***************************************
 * CJ/T188 报文校验\帧完整过滤
 ***************************************/
INT16S filter(INT8U* rcvbuff,INT16U rcvlen);

/********************************************************
 * CJ/T188 根据不同的Ctrl码,完成数据帧的报文组织
 *******************************************************/
INT16S dataFrame(cj188_Frame cj188,cj188_Para cj188_para,INT8U* databuf);

/***************************************
 * CJ/T188 主站写价格表报文组织
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI10(DI_10 di10,INT8U *buf);

/***************************************
 * CJ/T188 主站写结算日
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI11(DI_11 di11,INT8U *buf);

/***************************************
 * CJ/T188 主站写抄表日
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI12(DI_12 di12,INT8U *buf);

/***************************************
 * CJ/T188 主站写购入金额
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI13(DI_13 di13,INT8U *buf);

/***************************************
 * CJ/T188 主站写新密钥
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI14(DI_14 di14,INT8U *buf);

/***************************************
 * CJ/T188 主站写标准时间
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI15(DI_15 di15,INT8U *buf);

/***************************************
 * CJ/T188 主站写阀门控制
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI17(DI_17 di17,INT8U *buf);

/***************************************
 * CJ/T188 主站写地址
 * 调试阶段明码传输,收到出厂启动命令后不再响应
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI18(DI_18 di18,INT8U *buf);

/***************************************
 * CJ/T188 主站写机电同步数据,
 * 调试阶段明码传输,收到出厂启动命令后不再响应
 * 返回值: 数据段长度
 ***************************************/
INT8U compose_DI16(DI_16 di16,INT8U *buf);

#endif /* CJT188_H_ */

